﻿#include "Server.h"
#include <boost/asio.hpp>
#include <signal.h>
#include <thread>
#include <mutex>
#include "AsioIOServicePool.h"
//简单的asio方式
int main() {
	try {
		boost::asio::io_context ioc;
		Server server(ioc, 3333);
		boost::asio::signal_set signals(ioc, SIGINT, SIGTERM);
			signals.async_wait([&ioc](auto, auto) {
				ioc.stop();
				AsioIOServicePool::GetInstance()->Stop();
				});
		ioc.run();
	}
	catch (boost::system::error_code& e) {
		std::cout << "服务器发生了错误：" << e.value() << e.message() << std::endl;
	}
	return 0;
}
//bool b_stop = false;
//std::mutex mutex_main;
//std::condition_variable cond_stop;
////可能运行在其他线程
//void handle_signal(int signal) {
//	if (signal == SIGINT || signal == SIGTERM) {
//		std::unique_lock<std::mutex> lock(mutex_main);
//		b_stop = true;
//		lock.unlock();
//		cond_stop.notify_one();
//	}
//}
//int main(int argc, char* argv[]) {
//	try {
//		boost::asio::io_context ioc;
//		//与客户端交互的线程
//		std::thread net_work_thread([&ioc]{
//			Server server(ioc, 3333);
//			ioc.run();
//			});
//		signal(SIGINT, handle_signal);
//		signal(SIGTERM, handle_signal);
//		while (!b_stop) {
//			std::unique_lock<std::mutex> lock(mutex_main);
//			cond_stop.wait(lock);
//		}
//		ioc.stop();
//		net_work_thread.join();
//	}
//	catch (boost::system::error_code& e) {
//		std::cout << "服务器发生了错误：" << e.value() << e.message() << std::endl;
//	}
//
//	return 0;
//}